import org.junit.platform.commons.util.StringUtils;

/**
 * @author 杨森
 * @date 2022年11月04日 11:19
 */
class Solution {
    public static void main(String[] args) {
        String order = "cba";
        String s = "abcd";
        customSortString(order,s);
    }
//    public static int reachNumber(int target) {
//
//        if (target < 0) target = -target;
//        int k = (int) Math.sqrt(2 * target), dist = k * (k + 1) / 2;
//        while (dist < target || (dist - target) % 2 == 1) {
//            k++;
//            dist = k * (k + 1) / 2;
//        }
//        return k;
//    }

//public static boolean isPalindrome(int x) {
//    //边界判断
//    if (x < 0) return false;
//    int div = 1;
//    //
//    while (x / div >= 10) div *= 10;
//    while (x > 0) {
//        int left = x / div;
//        int right = x % 10;
//        if (left != right) return false;
//        x = (x % div) / 10;
//        div /= 100;
//    }
//    return true;
//
//}

    public static String customSortString(String order, String s) {
        int[] cnts = new int[26];
        for (char c : s.toCharArray()) cnts[c - 'a']++;
        StringBuilder sb = new StringBuilder();
        for (char c : order.toCharArray()) {
            while (cnts[c - 'a']-- > 0) sb.append(c);
        }
        for (int i = 0; i < 26; i++) {
            while (cnts[i]-- > 0) sb.append((char)(i + 'a'));
        }
        return sb.toString();
    }

}
